#ifndef _GUARD_PLAYER_
#define _GUARD_PLAYER_
#include "Advisor.h"
#include "Deck.h"
#include <math.h>
#include <set>
#include <string>
#include <vector>
using namespace std;
class Player
{
  public:
    Player();
    void setAdvisor(Advisor* advisor);
    void feedVassal(Player* vassal, int numberOfCards);
    void feedAllVassals();
    vector<Player*> getVassals();
    void addVassal(Player* newVassal);
    void setOwner(Player* czar);
    Player* getOwner();
    bool getIsVassal();
    void refillHand();
    Deck* getHand();
    int getMaxHandSize();
    int handCount();
    Deck* getArmy();
    bool getWarFlag();
    void setWarFlag(bool);

    /* for AI */
    int getPlay();
    int getFeedNumber(Player* vassal);
    vector<Player*> getFeedVassal();

    
    void setAddress(string address);
    string getAddress();
    
    void setMoveCard(Card* card);
    void setMoveFeed(Player* vassal, int numCards);
    int getMoveFeed();
    Card* getMoveCard();

  private:
    bool warFlag;
    Advisor* ai;
    vector<Player*> vassals;
    Player* owner;
    int maxHandSize;
    Deck hand;
    Deck army;
    string address;
    Card* moveCard;
    int moveFeedNumber;
    Player* moveFeedVassal;
    bool dead;
};

#endif
